﻿using System;
using System.Collections.Generic;
using System.Linq;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Audio;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.GamerServices;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using Microsoft.Xna.Framework.Media;

namespace WindowsGame1
{
    class Menu : GerenciadorTelas
    {       
       Texture2D fundoMenu, icone;

        Vector2[] opcoesMenu = new Vector2[4];
        Vector2 posicaoBotao;

        float rotacao;

        SoundEffect escolhaOpcao, opcaoSelecionada;

        public Menu()
        {
            opcoesMenu[0] = new Vector2(260, 320);
            opcoesMenu[1] = new Vector2(260, 380);
            opcoesMenu[2] = new Vector2(260, 440);
            opcoesMenu[3] = new Vector2(260, 500);

            posicaoBotao = opcoesMenu[0];
            
        }

        public void Load(ContentManager Content)
        {
            fundoMenu = Content.Load<Texture2D>("MenuGame");
            icone = Content.Load<Texture2D>("icone");
            escolhaOpcao = Content.Load<SoundEffect>("escolha1");
            opcaoSelecionada = Content.Load<SoundEffect>("escolha4");
        }

        public void Update(GameTime gameTime)
        {
                   
            #region COMPORTAMENTO DA SELEÇÃO DOS BOTÕES COM O JOYSTICK
              if (posicaoBotao == opcoesMenu[0])
                {
                    if ((Game1.ApertouJoystick(Buttons.LeftThumbstickDown) || (Game1.ApertouJoystick(Buttons.DPadDown) || (Game1.ApertouTeclado(Keys.Down)))))
                    {
                        posicaoBotao = opcoesMenu[1];
                        escolhaOpcao.Play();
                    }
                    if ((Game1.ApertouJoystick(Buttons.LeftThumbstickUp) || (Game1.ApertouJoystick(Buttons.DPadUp) ||
                        (Game1.ApertouTeclado(Keys.Up)))))
                    {
                        posicaoBotao = opcoesMenu[3];
                        escolhaOpcao.Play();
                    }
                }
                else if (posicaoBotao == opcoesMenu[1])
                {
                    if ((Game1.ApertouJoystick(Buttons.LeftThumbstickDown) || (Game1.ApertouJoystick(Buttons.DPadDown) || (Game1.ApertouTeclado(Keys.Down)))))
                    {
                        posicaoBotao = opcoesMenu[2];
                        escolhaOpcao.Play();
                    }
                    if ((Game1.ApertouJoystick(Buttons.LeftThumbstickUp) || (Game1.ApertouJoystick(Buttons.DPadUp) ||
                        (Game1.ApertouTeclado(Keys.Up)))))
                    {
                        posicaoBotao = opcoesMenu[0];
                        escolhaOpcao.Play();
                    }
                }
                 else if (posicaoBotao == opcoesMenu[2])
                {
                    if ((Game1.ApertouJoystick(Buttons.LeftThumbstickDown) || (Game1.ApertouJoystick(Buttons.DPadDown) || (Game1.ApertouTeclado(Keys.Down)))))
                    {
                        posicaoBotao = opcoesMenu[3];
                        escolhaOpcao.Play();
                    }
                    if ((Game1.ApertouJoystick(Buttons.LeftThumbstickUp) || (Game1.ApertouJoystick(Buttons.DPadUp) ||
                        (Game1.ApertouTeclado(Keys.Up)))))
                    {
                        posicaoBotao = opcoesMenu[1];
                        escolhaOpcao.Play();
                    }
                }
                 else  if (posicaoBotao == opcoesMenu[3])
                {
                    if ((Game1.ApertouJoystick(Buttons.LeftThumbstickDown) || (Game1.ApertouJoystick(Buttons.DPadDown)|| (Game1.ApertouTeclado(Keys.Down)))))
                    {
                        posicaoBotao = opcoesMenu[0];
                        escolhaOpcao.Play();
                    }
                    if ((Game1.ApertouJoystick(Buttons.LeftThumbstickUp) || (Game1.ApertouJoystick(Buttons.DPadUp) || 
                        (Game1.ApertouTeclado(Keys.Up)))))
                    {
                        posicaoBotao = opcoesMenu[2];
                        escolhaOpcao.Play();
                    }
                }
            #endregion


              if (posicaoBotao == opcoesMenu[0] && (Game1.ApertouJoystick(Buttons.A)||
               (posicaoBotao == opcoesMenu[0] && (Game1.ApertouTeclado(Keys.Enter)))))
                {
                    //NOVO JOGO
                    estadoAtual = Estados.FASE1;
                    opcaoSelecionada.Play();
                }

              if (posicaoBotao == opcoesMenu[1] && (Game1.ApertouJoystick(Buttons.A) ||
             (posicaoBotao == opcoesMenu[1] && (Game1.ApertouTeclado(Keys.Enter)))))
                {
                    // INSTRUÇÕES
                    estadoAtual = Estados.INSTRUCOES;
                    opcaoSelecionada.Play();
                }

              if (posicaoBotao == opcoesMenu[2] && (Game1.ApertouJoystick(Buttons.A) ||
             (posicaoBotao == opcoesMenu[2] && (Game1.ApertouTeclado(Keys.Enter)))))
                {
                    //CREDITOS
                    estadoAtual = Estados.CREDITOS;
                    opcaoSelecionada.Play();
                }

              if (posicaoBotao == opcoesMenu[3] && (Game1.ApertouJoystick(Buttons.A) ||
              (posicaoBotao == opcoesMenu[3] && (Game1.ApertouTeclado(Keys.Enter)))))
                {
                    //SAIR        
                    estadoAtual = Estados.SAIR;
                   
                }
   
        }
        
        public void Draw(SpriteBatch spriteBatch)
        {
            rotacao+=0.01f;
            spriteBatch.Draw(fundoMenu, Vector2.Zero, Color.White);
            spriteBatch.Draw(icone, new Rectangle(
                    (int)posicaoBotao.X + icone.Width/4,
                    (int)posicaoBotao.Y + icone.Height/2,
                    icone.Width,
                    icone.Height),
                    new Rectangle(
                        0,
                        0,
                        icone.Width,
                        icone.Height),
                        Color.White,
                        rotacao,
                        new Vector2(
                            icone.Width / 2,
                            icone.Height / 2),
                            SpriteEffects.None,
                            1.0f);           
        }
    }
}
